<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
</head>

<body>
  <script>
    // Object.is 用来比较两个值是否严格相等，与严格比较运算符（===）的行为基本一致
    Object.is('foo', 'foo'); // true
    Object.is({}, {}); // false
    Object.is(+0, -0); // false
    Object.is(NaN, NaN); // true

    //Object.assign 用于对象的合并，将源对象（source）的所有可枚举属性，复制到目标对象（target）
    //注意，如果目标对象与源对象有同名属性，或多个源对象有同名属性，则后面的属性会覆盖前面的属性。
    //Object.assign方法实行的是浅拷贝,并且只拷贝源对象的自身属性（不拷贝继承属性），也不拷贝不可枚举的属性（enumerable: false）
    var target = { a: 1, b: 1 };
    var source1 = { b: 2, c: 2 };
    var source2 = { c: 3 };

    Object.assign(target, source1, source2);
    console.log(target); // {a:1, b:2, c:3}

    //对象遍历
    var obj = { foo: 'bar', baz: 42 };
    Object.keys(obj);
    // ["foo", "baz"]

    var obj = { foo: 'bar', baz: 42 };
    Object.values(obj);
    // ["bar", 42]

    var obj = { foo: 'bar', baz: 42 };
    Object.entries(obj);
      // [ ["foo", "bar"], ["baz", 42] ]
  </script>
</body>

</html>